package store

import (
	"cloud-disk/global/store"
	"fmt"
	"github.com/aliyun/aliyun-oss-go-sdk/oss"
	"os"
	"time"
)

func ToOSS(localFilename string, storeKey string) error {
	start := time.Now()
	fmt.Println("to oss start !")

	// 如果需要在初始化分片时设置请求头，请参考以下示例代码。
	options := []oss.Option{
		oss.Routines(10),
		oss.Checkpoint(true, ""),
		//oss.MetadataDirective(oss.MetaReplace),
		// 指定该Object被下载时的网页缓存行为。
		// oss.CacheControl("no-cache"),
		// 指定该Object被下载时的名称。
		// oss.ContentDisposition("attachment;filename=FileName.txt"),
		// 指定该Object的内容编码格式。
		// oss.ContentEncoding("gzip"),
		// 指定对返回的Key进行编码，目前支持URL编码。
		// oss.EncodingType("url"),
		// 指定Object的存储类型。
		// oss.ObjectStorageClass(oss.StorageStandard),
	}

	// 步骤1：初始化一个分片上传事件，并指定存储类型为标准存储。
	bucket := store.OSS{}.B()
	err := bucket.UploadFile(storeKey, localFilename, 100*1024, options...)
	if err != nil {
		fmt.Println("Error:", err)
		os.Exit(-1)
	}
	fmt.Printf("store to oss cost: %vs\n", time.Since(start).Seconds())
	return nil
}
